查看原文
其他

探索数据之美:R语言中数据框融合秘籍!

游南 游北向难 2024-03-26

探索数据之美:R语言中数据框融合秘籍!

介绍

本文介绍了三种实现两个数据框融合的方法。

分别为merge()函数;dplyr包的_join系列函数;rbind和cbind()函数

  • 介绍

  • 数据构建

  • 实现方式:merge()

    • merge usage

    • 两数据框同名列进行合并

    • 指定列进行合并

    • 依据多列进行合并

  • 实现方式:dplyr包

    • 保留左表的所有信息

    • 保留右表的所有信息

    • 保留两个表公共信息

    • 保留两个表的所有信息

    • 多列匹配

    • 根据不同列名合并

    • 当合并的列存在同名(不同值),使用suffix增加后缀

  • 实现方式:cbind()和rbind()函数

    • rbind()函数 按行合并

    • cbind()函数 按列合并


正文部分

数据构建

## R数据处理基础-表格的融合
## Time: 20240320
## Author: xiaohe
## Notes: zhenzhen

## 数据构建
data_1<-data.frame(X=c("A","B","C","D"),Y=c(1,3,5,7))
data_2<-data.frame(X=c("A","B","E","F"),Z=c(2,4,5,6))
data_3<-data.frame(S=c("A","B","E","F"),Z=c(2,4,5,6))
data_4<-data.frame(X=c("A","B","E","F"),Y=c(1,2,5,7),Z=c(2,4,6,8))
数据预览

实现方式:merge()

merge usage

# merge()函数
# usage
merge(x, y, # 要合并的两个数据框
      by = intersect(names(x), names(y)), # 用来进行合并的列名,是x和y共有的列名的交集
      by.x = by, by.y = by, # 指定x和y中用来进行合并的列名
      all = FALSE# 逻辑向量,指明是否要保留未匹配的行,默认为FALSE
      all.x = all, all.y = all, # 逻辑向量,指示是否对应x或y中的所有行,而步仅仅是匹配的行
      sort = TRUE# 是否按照合并的列对结果进行排序,默认为TRUE
      suffixes = c(".x",".y"), # 当存在重复的列名时,用于区分这些列的后缀
      no.dups = TRUE# 逻辑值,是否去除重复的列
      incomparables = NULL# 不可比较的值
      ...)

两数据框同名列进行合并

# 两数据框同名列进行合并
data_merge1<-merge(data_1,data_2,by="X",all = TRUE)

指定列进行合并

# 指定列进行合并
data_merge2<-merge(data_1,data_3,by.x = "X",by.y = "S")

依据多列进行合并

# 依据多列进行合并
data_merge3<-merge(data_1,data_4,by=c("X","Y"),all=TRUE)

实现方式:dplyr包

保留左表的所有信息

# 保留左表的所有数据
data_join_1<-dplyr::left_join(x=data_1,,y=data_2,by="X")

保留右表的所有信息

# 保留右表的所有数据
data_join_2<-dplyr::right_join(x=data_1,y=data_2,by="X")

保留两个表公共信息

# 保留两个表公共信息
data_join_3<-dplyr::inner_join(x=data_1,y=data_2,by="X")

保留两个表的所有信息

# 保留两个表的所有信息
data_join_4<-dplyr::full_join(x=data_1,y=data_2,by="X")

多列匹配

# 多列匹配
data_join_5<-dplyr::left_join(x=data_1,y=data_4,by=c("X","Y"))

根据不同列名合并

# 根据不同列名合并
data_join_6<-dplyr::left_join(x=data_1,y=data_3,by=c("X"="S"))

当合并的列存在同名(不同值),使用suffix增加后缀

# 当合并的列存在同名(不同值),使用suffix增加后缀
data_join_7<-dplyr::left_join(x=data_1,y=data_4,by="X",suffix = c(".1",".2"))

实现方式:cbind()和rbind()函数

rbind()函数 按行合并

## 数据构建
data_a<-data.frame(X=c("A","B"),Y=c(1,3))
data_b<-data.frame(X=c("C","D"),Y=c(2,4))
## 按行合并
data_rbind<-rbind(data_a,data_b)

cbind()函数 按列合并

## 数据构建
data_a<-data.frame(X=c("A","B"),Y=c(1,3))
data_b<-data.frame(S=c("C","D"),Z=c(2,4))
## 按列合并
data_cbind<-cbind(data_a,data_b)

备注

大家有兴趣可加群,欢迎交流学习,共同进步!

若群链接失效,可在本公众号内的对话框回复关键词R语言学习交流群

直接扫码进群
欢迎扫码添加本人

若您觉得本文有帮助,帮忙点击点赞在看是对我最大的鼓励和支持!



继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存